package cn.micai.base.thread;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * 描述：无状态Servlet  线程安全
 * <p>
 *  下面是一个无状态的 Servlet，它从 Request 中解包数据，然后将这两个数据进行相乘，最后把结果封装在 Response 中
 *  这个 Servlet 是无状态的，它不包含域，也没有引用其它类的域，一次特定计算的瞬时状态，会唯一的存储在本地变量中，这些本地变量存在线程的栈中，只有执行* *  线程才能访问，一个执行该 Servlet 的线程不会影响访问同一个 Servlet 的其它线程的计算结果，因为两个线
 *  程不共享状态，他们如同在访问不同的实例。
 *
 *  因为线程访问无状态对象的行为，不会影响其它线程访问对象时的正确性，所以无状态对象是线程安全的
 *
 *
 * @author: 赵新国
 * @date: 2018/5/11 16:23
 */
public class ConcurrentServlet extends HttpServlet {

    public ConcurrentServlet(){
        super();
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String s1 = request.getParameter("num1");
        String s2 = request.getParameter("num2");
        int result = 0;
        if (s1 != null && s1 != null) {
            result = Integer.parseInt(s1) * Integer.parseInt(s2);
        }
        PrintWriter out = response.getWriter();
        out.print(result);
        out.close();
    }
}
